home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / batchut / ifexist.zip / TYPEOF.ASM < prev    next >
Assembly Source File  |  1987-10-05  |  5KB  |  109 lines

  1. Title   TypeOf  Determine type of DOS being Used - 05 Oct 1987 - Davy Crockett
  2.  
  3. ;       ╔═══╦═══════════════════════════════╦═══╗
  4. ;       ║▒▒▒║   Davy Crockett Productions   ║▒▒▒║
  5. ;       ║▒▒▒║   5807 Cherrywood Lane, 104   ║▒▒▒║
  6. ;       ║▒▒▒║   Greenbelt, Maryland 20770   ║▒▒▒║
  7. ;       ╚═══╩═══════════════════════════════╩═══╝
  8.  
  9. Cseg    Segment
  10.         Assume  DS:Cseg, SS:Cseg, CS:Cseg, ES:Cseg
  11.  
  12. Null    Equ     00H
  13. CR      Equ     0DH
  14. LF      Equ     0AH
  15. Parms   Equ     5CH
  16.  
  17.         Org     100H
  18.  
  19. TypeOf:
  20.         Mov     BX,Parms                ; get parm pointer
  21.         Cmp     Byte Ptr [BX],Null      ; anything there?
  22.         Jnz     GetDefault              ; yes, continue
  23.         Jmp     DisplayHelp             ; no, display help screen
  24.  
  25. GetDefault:
  26.         Mov     AL,[BX]                 ; pick up parameter
  27.         Dec     AL                      ; adjust for in-consistency
  28.         Mov     BX,Offset DiskBuffer    ; disk buffer address
  29.         Mov     CX,1                    ; number of sectors
  30.         Mov     DX,0                    ; beginning sector number
  31.         Int     25H                     ; absolute disk read
  32.         Pop     BX                      ; remove flags from stack
  33.         Jc      NoDiskExit              ; no, exit stage left
  34.  
  35. VersionTest:
  36.         Cmp     Byte Ptr 10[DiskBuffer],'1'      ; Version 3.1 DOS?
  37.         Jnz     NoDiskExit              ; no, can't determine
  38.  
  39. LeTest:
  40.         Cmp     Byte Ptr 3[DiskBuffer],'P'       ; Leading Edge?
  41.         Jnz     NcrTest                 ; no, try NCR
  42.         Cmp     Byte Ptr 4[DiskBuffer],'S'       ; Leading Edge?
  43.         Jnz     NcrTest                 ; no, try NCR
  44.         Cmp     Byte Ptr 5[DiskBuffer],'A'       ; Leading Edge?
  45.         Jz      LeExit                  ; yes, exit stage right
  46.  
  47. NcrTest:
  48.         Cmp     Byte Ptr 162[DiskBuffer],'N'     ; NCR?
  49.         Jnz     IbmTest                 ; no, try IBM
  50.         Cmp     Byte Ptr 163[DiskBuffer],'C'     ; NCR?
  51.         Jnz     IbmTest                 ; no, try IBM
  52.         Cmp     Byte Ptr 164[DiskBuffer],'R'     ; NCR?
  53.         Jz      NcrExit                 ; yes, exit stage right
  54.  
  55. IbmTest:
  56.         Cmp     Byte Ptr 3[DiskBuffer],'I'       ; IBM?
  57.         Jnz     NoDiskExit              ; no, exit stage left
  58.         Cmp     Byte Ptr 4[DiskBuffer],'B'       ; IBM?
  59.         Jnz     NoDiskExit              ; no, exit stage left
  60.         Cmp     Byte Ptr 5[DiskBuffer],'M'       ; IBM?
  61.         Jz      IbmExit                 ; yes, exit stage right
  62.  
  63. NoDiskExit:
  64.         Mov     AL,0                    ; Return disk not found
  65.         Jmp     Short   TypeOfExit      ; go to Exit
  66. LeExit:
  67.         Mov     AL,1                    ; Return disk not found
  68.         Jmp     Short   TypeOfExit      ; go to Exit
  69. NcrExit:
  70.         Mov     AL,2                    ; Return disk not found
  71.         Jmp     Short   TypeOfExit      ; go to Exit
  72. IbmExit:
  73.         Mov     AL,3                    ; Return disk not found
  74.         Jmp     Short   TypeOfExit      ; go to Exit
  75. DisplayHelp:
  76.         Mov     DX,Offset DiskBuffer    ; point to message
  77.         Mov     AH,09H                  ; display string function
  78.         Int     21H                     ; StdOut
  79.         Mov     AL,0                    ; no disk return code
  80.  
  81. TypeOfExit:
  82.         Mov     AH,4CH                  ; terminate a process
  83.         Int     21H                     ; exit stage left
  84.  
  85. DiskBuffer      DB      CR,LF,LF
  86.                 DB      '«*» TypeOf «*» Version 1.0 «*» 05 Oct 1987 '
  87.                 DB      '«*» Davy Crockett «*»',CR,LF,LF
  88.                 DB      'Determines type of DOS being used.',CR,LF,LF
  89.                 DB      '    Execute:  TypeOf [drive]',CR,LF,LF
  90.                 DB      '    Return Code = 0, non-system disk or can not determine.',CR,LF
  91.                 DB      '    Return Code = 1, Leading Edge, Version 3.1.',CR,LF
  92.                 DB      '    Return Code = 2, NCR-DOS, Version 3.1.',CR,LF
  93.                 DB      '    Return Code = 3, IBM-DOS, Version 3.1.',CR,LF,LF
  94.                 DB      '$'
  95.  
  96. TypeOfLen       Equ     (This Byte) - (Offset TypeOf)
  97. Filler          Equ     944 - TypeOfLen
  98.                 DB      Filler DUP(0)
  99. CopyRight       Equ     $
  100.                 DB      '╔═════════════╗ '
  101.                 DB      '║Davy Crockett║ '
  102.                 DB      '║ Productions ║ '
  103.                 DB      '║ 05 Oct 1987 ║ '
  104.                 DB      '╚═════════════╝'
  105.  
  106. Cseg    Ends
  107.  
  108.         End     TypeOf
  109.